package logicaNegocio;

import java.util.ArrayList;
import java.util.Map;
import logicaDatos.ConversorBD;


public class GestionAlumnos {
	

	private Map<String,Alumno> alumnos;
	private Alumno a;
	private Pertenece p;
	private Clase c;
	private String [] asignaturasProfesor;
	
	public String verMisDatos(String DniAlumno)
	{
		a = (Alumno)alumnos.get(DniAlumno);
		return a.toString();	
	}

	public Grado verMisGrados(String dniAlumno) 
	{
    	
		ConversorBD con=new ConversorBD();
		Alumno A = (Alumno)con.leerAlumno().get(dniAlumno);
		return A.getGrado();
	}

	public String verInfEconomica(String dniAlumno) 
	{
		Alumno a = (Alumno)alumnos.get(dniAlumno);
		return Float.toString(a.getInfEconomica());
	}

	public int [] toStringAsignaturas(String dniAlumno, int cont)
	{
		int i = 0;
		ConversorBD con=new ConversorBD();

		int [] NoAsignaturas  = new int [cont];
		
		Alumno A = (Alumno)con.leerAlumno().get(dniAlumno);
		
		for (int k = 0; k<con.leerPertenece().size();k++)
		{
			p = (Pertenece) con.leerPertenece().get(k);
			
			if (A.getGrado().getNombreGrado().equals(p.getGrado().getNombreGrado()))
			{
				NoAsignaturas [i] =  k;
				i++; 	
			}

		}

		return NoAsignaturas ;
	}
	
	public int getNoAsignaturas(String dniAlumno) 
	{
		ConversorBD con=new ConversorBD();
		Alumno A = (Alumno)con.leerAlumno().get(dniAlumno);
		int cont = 0;
		for (int k = 0; k<con.leerPertenece().size();k++)
		{
			p = (Pertenece) con.leerPertenece().get(k);

			if (A.getGrado().getNombreGrado().equals(p.getGrado().getNombreGrado()))
			{
				
				cont++; 
			}
		}
		return cont;
	}
	public String[] toStringProfesor(String dniAlumno, int cont) 
	{
		int m = 0;
		ConversorBD con=new ConversorBD();
		String [] Profesores  = new String [cont];
		asignaturasProfesor  = new String [cont];
		
		for (int k = 0; k<con.leerPertenece().size();k++)
		{
			p = (Pertenece) con.leerPertenece().get(k);
			
			for (int i = 0; i<con.leerClase().size();i++)
			{	
				c = (Clase) con.leerClase().get(i);
				Alumno A = (Alumno)con.leerAlumno().get(dniAlumno);

				if (A.getGrado().getNombreGrado().equals(p.getGrado().getNombreGrado()))
				{
					if(p.getAsignatura().getNombreAsignatura().equals( c.getAsignatura().getNombreAsignatura()))
					{
						Profesores [m] =  c.getProfesor().getDni();
						asignaturasProfesor [m] = p.getAsignatura().getNombreAsignatura();
						m++;
					}
				}
			}
		}
		return Profesores;
	}
	public String[] getAsignaturaProfesor() 
	{
		return asignaturasProfesor;
	}
	public int getNoProfesores(String dniAlumno)
	{
		int cont = 0;
		ConversorBD con=new ConversorBD();
		for (int k = 0; k<con.leerPertenece().size();k++)
		{
			p = (Pertenece) con.leerPertenece().get(k);

			for (int i = 0; i<con.leerClase().size();i++)
			{				
				c = (Clase) con.leerClase().get(i);
				Alumno A = (Alumno)con.leerAlumno().get(dniAlumno);

				if (A.getGrado().getNombreGrado().equals( p.getGrado().getNombreGrado()))
				{
					if(p.getAsignatura().getNombreAsignatura().equals(c.getAsignatura().getNombreAsignatura()))
					{
						cont++;		
					}
				}
			}
		}
		return cont;
	}
	public void borrarAlumno(String dni) 
	{
		alumnos = getAlumnos();
		Alumno a = (Alumno) alumnos.get(dni);
		getNoAlumnos(a.getGrado(),getcampus());
		ConversorBD con	=new ConversorBD();
		con.borrarAlumno(a);		
	}
	public void getNoAlumnos(Grado G, ArrayList<Campus> campus) 
	{
		ConversorBD con = new ConversorBD();
		for (int i = 0; i<campus.size();i++)
		{
			Campus c = campus.get(i);
			if (c.getNombreCampus().equals(G.getCampus().getNombreCampus()))
			{
				c.reduceNoCampus();
				con.actualizarCampus2(c, c.getID());
			}
		}
	}
	
	public Map <String,Grado>getGrados ()
	{
		try{
			ConversorBD con=new ConversorBD();
		return con.leerGrado();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}
	
	public Map <String,Alumno>getAlumnos() 
	{
		try{
		ConversorBD con=new ConversorBD();
		return con.leerAlumno();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}
	public Map <String,Profesor> getProfesores ()
	{
		try
		{
		ConversorBD objCon=new ConversorBD();
		return objCon.leerProfesor();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}
	public ArrayList<Clase> getClases(ArrayList<Clase> Clases) 
	{
		try
		{
		ConversorBD objCon=new ConversorBD();
		return objCon.leerClase();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}

	public ArrayList<Pertenece> getPerteneces(ArrayList<Pertenece> Perteneces) 
	{
		try
		{
		ConversorBD con=new ConversorBD();
		return con.leerPertenece();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}
	public ArrayList<Asignatura> getAsignaturas() 
	{
		try
		{
		ConversorBD objCon=new ConversorBD();
		return objCon.leerAsignatura();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}
	public ArrayList<Campus> getcampus ()
	{
		try
		{
		ConversorBD objCon=new ConversorBD();
		return objCon.leerCampus();
		}
		catch (NullPointerException e)
		{
			return null;
		}
		
	}
}
